蚁群算法(ACO)任务序列规划

本文为用蚁群算法做AUV导航中全局任务序列规划所做的笔记,仅供参考。全局任务序列规划就是,将很大的环境用离散的任务点填充,在全局规划出的任务序列点之间进行实时的局部规划。本文使用蚁群算法对任务序列进行优化。

——————————————首先学习一下蚁群算法——————————————-

1 ACO算法简介

  按照百度百科的说法。蚁群算法,英文名为Ant Colony Optimization,是一种用来在图中寻找优化路径的机率型算法。蚁群算法是一种模拟进化算法。各个蚂蚁在没有事先告诉它们食物在什么地方的前提下开始寻找食物,当一只找到食物之后,它会向环境中释放一种挥发性分泌物(Pheromore,信息素),该物质随着时间的推移会逐渐挥发消失,信息素浓度的大小表征路径的远近,信息素会吸引其他更多的蚂蚁过来,这样越来越多的蚂蚁会找到食物。另外,蚂蚁的运动也会加入一定的随机因子,这样如果找到更近的路径的话,就会有更多的蚂蚁被吸引过来。最后,经过一段时间的运行之后,就会出现一条最短的路径被大多数蚂蚁重复着。
  蚁群优化算法长用来求复杂离散优化问题的较好解。协作是该算法的一个关键设计组件,即将计算资源合理地分配到蚁群上,蚁群中蚂蚁之间间接通信。

1.1 假设

  1)人造蚂蚁在离散的世界,总是从一个离散状态到另一个离散状态;
  2)人造蚂蚁有一个内在(internal)的状态,这种状态包括对自身之前运动的记忆;
  3)人造蚂蚁沉积的信息素总量和过去该位置通过的蚂蚁总数量有关,成正比;
  4)人造蚂蚁释放信息素的时间依赖于问题,并不反映真实的蚂蚁行为;比如,大多数情况下,人工蚁群仅在生成一个解之后更新信息素沉积;                    

1.2 ACO算法路径规划

  ACO算法在寻找最优路径方面(在图中)。首先初始化一张图(图有节点和边),在matlab里面可以用一个方阵来表示边,信息素是分布在边上的,所以信息素矩阵也可以用一个方阵表示;在一次进化(迭代)中,每只蚂蚁从起点开始按照ACO算法策略运动,这种策略是首先确定候选节点的概率,概率用下式计算
   

这里写图片描述

    式中,第一项 这里写图片描述表示边i-j之间的信息素浓度, 这里写图片描述表示边i-j之间的启发因子,可以使用边长的倒数作为启发因子。根据上式,就可以计算出蚂蚁选择各个待选节点的概率。计算出概率之后,再计算累加概率,用轮盘赌策略选择下一节点。在一次进化(迭代)完成之后,每只蚂蚁不管有没有到达终点,都完成了它的本次旅程,在这些旅程路径中选择出符合条件的路径点序列(如必须到达终点,边不能重复等),用路径点序列的代价值作为分母来确定信息素增量。最后,在一次迭代完成之后,还要对所有边上的信息素整体减少,来模拟信息素的挥发。

——————————————使用蚁群算法进行任务序列规划——————————————-

2 AUV任务序列规划

      海洋环境是建模成路径点组成的任务点网络图,需执行的任务稀疏地安排在网络图中的边上,任务优先级也在AUV开始执行任务之前以权重值的形式指定。有任务的边优先级权重值设置为大于1的数,没有任务的边优先级权重值设置为1。AUV要在有限的时间内,从任务起点开始,完成最大数量的高优先级任务,并在结束时到达任务终止点。因为AUV能量和任务总时间的限制,一个AUV在一次任务中显然不能到达所有的子任务点,尤其是在很大的环境内运行时(子任务点数量会很多)。因此,需要在完成任务数量和花费时间之间做一个折中。
      本次matlab实现中,在二维场景首先进行尝试。路径点(子任务点)人为实现指定,网络图中的边根据相互距离确定。路径评价使用路径长度。先尝试选择出起点和终点之间的最短路径,对算法进行测试。后面再考虑加入子任务点,并加入新的路径评价标准。
     

3 matlab代码

task_planning.m

clear
map = imread('map2.jpg');                                   % 读入图片
map = rgb2gray(map);                                        % 转换为灰度图
map = im2bw(map,0.2);                                       % 转换为二值图

figure(1)
imshow(map);                                                % 显示并设置坐标系
axis xy
axis on
hold on

                                                            % 任务点(路径点)集合
taskPoint = [23 40  20  42  30  131 137 125 220 268 224 274 244 299 331
  • 2
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值